library(cfbfastR)
## Warning: package 'cfbfastR' was built under R version 4.1.2
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✓ tibble  3.1.4     ✓ purrr   0.3.4
## ✓ tidyr   1.1.3     ✓ stringr 1.4.0
## ✓ readr   2.0.1     ✓ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## x plotly::filter() masks dplyr::filter(), stats::filter()
## x dplyr::lag()     masks stats::lag()
CFBD_API_KEY = "ysMTW4jIsv4kWgHXoM3yF8lVKm+4wNfuM9VKnZlrT5kavH0nXCxSyUpNGn4LKdtE"

Sys.setenv(CFBD_API_KEY = CFBD_API_KEY)


cfb.betting.2021 = cfbfastR::cfbd_betting_lines(year = 2021)
team_in_conference = function(conference, home_conference, away_conference) {
  return(conference == home_conference | conference == away_conference)
}

unique(cfb.betting.2021$home_conference)[1:11]
##  [1] "Mid-American"      "American Athletic" "ACC"              
##  [4] "Mountain West"     "Pac-12"            "FBS Independents" 
##  [7] "Big 12"            "Big Ten"           "Sun Belt"         
## [10] "SEC"               "Conference USA"
CFBConf <- cfb.betting.2021 %>%
  mutate(mac = team_in_conference("Mid-American", home_conference, away_conference),
         aac = team_in_conference("American Athletic", home_conference, away_conference),
         acc = team_in_conference("ACC", home_conference, away_conference),
         mtw = team_in_conference("Mountain West", home_conference, away_conference),
         big10 = team_in_conference("Big Ten", home_conference, away_conference),
         pac12 = team_in_conference("Pac-12", home_conference, away_conference),
         independent = team_in_conference("FBS Independents", home_conference, away_conference),
         big12 = team_in_conference("Big 12", home_conference, away_conference),
         sbc = team_in_conference("Sun Belt", home_conference, away_conference),
         sec = team_in_conference("SEC", home_conference, away_conference),
         cusa = team_in_conference("Conference USA", home_conference, away_conference))

CFBConf <- CFBConf[ !is.na(CFBConf$spread), ]

mac <- CFBConf %>%
  filter(mac == TRUE) %>%
  summarise("Conference" = "Mid-American", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

aac <- CFBConf %>%
  filter(aac == TRUE) %>%
  summarise("Conference" = "American Athletic", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

acc <- CFBConf %>%
  filter(acc == TRUE) %>%
  summarise("Conference" = "ACC", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

mtw <- CFBConf %>%
  filter(mtw == TRUE) %>%
  summarise("Conference" = "Mountain West", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

big10 <- CFBConf %>%
  filter(big10 == TRUE) %>%
  summarise("Conference" = "Big 10", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

pac12 <- CFBConf %>%
  filter(pac12 == TRUE) %>%
  summarise("Conference" = "Pac-12", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

independent <- CFBConf %>%
  filter(independent == TRUE) %>%
  summarise("Conference" = "Independent", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

big12 <- CFBConf %>%
  filter(big12 == TRUE) %>%
  summarise("Conference" = "Big 12", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

sbc <- CFBConf %>%
  filter(sbc == TRUE) %>%
  summarise("Conference" = "Sun Belt", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

sec <- CFBConf %>%
  filter(sec == TRUE) %>%
  summarise("Conference" = "SEC", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

cusa <- CFBConf %>%
  filter(cusa == TRUE) %>%
  summarise("Conference" = "Conference USA", "Spread" = mean(as.numeric(spread)), "Outcome" = mean(away_score - home_score))

Spreads <- mac %>%
  rbind(aac)

Spreads <- Spreads %>%
  rbind(acc)

Spreads <- Spreads %>%
  rbind(big10)

Spreads <- Spreads %>%
  rbind(mtw)

Spreads <- Spreads %>%
  rbind(pac12)

Spreads <- Spreads %>%
  rbind(independent)

Spreads <- Spreads %>%
  rbind(big12)

Spreads <- Spreads %>%
  rbind(sbc)

Spreads <- Spreads %>%
  rbind(sec)

Spreads <- Spreads %>%
  rbind(cusa)
Spreads <- Spreads %>%
  pivot_longer(cols=c(`Spread`, `Outcome`),names_to="Spread/Outcome",values_to="Average")

Spreads$Conference <- factor(Spreads$Conference, levels = c("SEC", "Mid-American", "Conference USA", "Big 10", "Mountain West", "Big 12", "ACC", "Pac-12", "Independent", "American Athletic", "Sun Belt"))
vis <- ggplot(Spreads, aes(x = Conference, y = - `Average`, fill = `Spread/Outcome`)) +
  geom_col(position = "dodge") +
  labs(y = "Average Score Difference", title = "Average Difference Between Spread and Outcomes By Conference") +
  theme(axis.text.x = element_text(angle = 45, hjust=1)) +
  theme_minimal()

ggplotly(vis) %>%
  layout(xaxis = list( tickangle = 45))